<?php
class CentroDistsController extends AppController {

	var $name = 'CentroDists';
        var $appModule = 'Maestros';
	var $helpers = array('Html', 'Form', 'Number', 'Codigo','GetList');
        var $uses  = array('CentroDist','TipoDocumento','Ubigeo');

	function index() {
            $q = $this->getBusqueda($this->data['CentroDist']['busqueda']);
            $this->set('q', $q);
            $conditions['CentroDist.empresa_id'] = $this->empresaId();
            $conditions['CentroDist.activo'] = 1;
            if (!empty($q))
                $conditions['OR'] = array(
                    'CentroDist.codigo SIMILAR TO'=>$q,
                    'CentroDist.descripcion SIMILAR TO'=>"%$q%"
                );
            $this->paginate['CentroDist'] = array(
                'conditions'=>$conditions,
                'order'=>'codigo'
            );
            $data = $this->paginate('CentroDist');
            $this->set('depositos', $data);
            $this->set('limite', $this->limite);
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('CentroDist invalida.', true));
			$this->redirect(array('action'=>'index'));
		}

                $this->CentroDist->bindModel(array(
                    'belongsTo'=>array(
                        'Ubigeo'=>array('foreignKey'=>'ubigeo_id'),
                        'TipoKardex'=>array('foreignKey'=>'tipo_kardex_id'),
                        'Representante1TipoDocumento'=>array('className'=>'TipoDocumento','foreignKey'=>'representante1_tipo_doc_id'),
                        'Representante1Ubigeo'=>array('className'=>'Ubigeo','foreignKey'=>'representante1_ubigeo_id'),
                        'Representante2TipoDocumento'=>array('className'=>'TipoDocumento','foreignKey'=>'representante2_tipo_doc_id'),
                        'Representante2Ubigeo'=>array('className'=>'Ubigeo','foreignKey'=>'representante2_ubigeo_id'),
                    )
                ));

                $data = $this->CentroDist->find('first', array(
                    'conditions'=>array('CentroDist.id'=>$id),
                    'contain'=>array(
                        'Ubigeo'=>array('fields'=>array('descripcion')),
                        'TipoKardex'=>array('fields'=>array('descripcion')),
                        'Representante1TipoDocumento'=>array('fields'=>array('simbolo')),
                        'Representante1Ubigeo'=>array('fields'=>array('descripcion')),
                        'Representante2TipoDocumento'=>array('fields'=>array('simbolo')),
                        'Representante2Ubigeo'=>array('fields'=>array('descripcion')),
                    )
                ));
		$this->set('deposito', $data);
	}

	function add() {
		if (!empty($this->data)) {
                        $this->data['CentroDist']['activo'] = 1;
                        $this->data['CentroDist']['usuario_creacion_id'] = $this->usuarioId();
                        $this->data['CentroDist']['fecha_creacion'] = 'now()';

			$this->CentroDist->create();
			if ($this->CentroDist->save($this->data)) {
				$this->Session->setFlash(__('El Deposito ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Deposito no ha podido ser guardado. Intente nuevamente..', true));
			}
		}
                
                $this->set('tipoDocumentos', $this->TipoDocumento->find('list',array(
                    'fields'=>array('id','simbolo'),
                    'order'=>'id'
                )));
                $this->set('ubigeos', $this->Ubigeo->find('list',array(
                    'fields'=>array('id','descripcion'),
                    'order'=>'id',
                    'condtions'=>array('activo'=>1)
                )));
	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Deposito Invalido', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
                        $this->data['CentroDist']['usuario_modificacion_id'] = $this->usuarioId();
                        $this->data['CentroDist']['fecha_modificacion'] = 'now()';
			if ($this->CentroDist->save($this->data)) {
				$this->Session->setFlash(__('El Deposito ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El Deposito no ha podido se guardado. Intente nuevamente.', true));
			}
		}
		if (empty($this->data)) {
                        $this->CentroDist->recursive = -1;
			$this->data = $this->CentroDist->read(null, $id);
		}
                $this->set('tipoDocumentos', $this->TipoDocumento->find('list',array(
                    'fields'=>array('id','simbolo'),
                    'order'=>'id'
                )));
                $this->set('ubigeos', $this->Ubigeo->find('list',array(
                    'fields'=>array('id','descripcion'),
                    'order'=>'id',
                    'condtions'=>array('activo'=>1)
                )));
	}

	function delete($id = null, $verbose = true) {
                if (!$id) {
                    if ($verbose){
                        $this->Session->setFlash(__('Id de Deposito invalido', true));
                        $this->redirect(array('action'=>'index'));
                    }
                    else return false;
                }
                $this->CentroDist->recursive = -1;
                $data = $this->CentroDist->read(null, $id);
                $data['CentroDist']['activo']=0;
                $data['CentroDist']['usuario_borrado_id']=$this->usuarioId();
                $data['CentroDist']['fecha_borrado']='now()';

                if (!$this->CentroDist->save($data) && !verbose)
                        return false;
                if ($verbose){
                    $this->Session->setFlash(__('Deposito eliminado', true));
                    $this->redirect(array('action'=>'index'));
                }
                else return true;
	}

    function process(){// procesa anulaciones y eliminaciones en bloque
		$op = isset($this->params['form']['delete'])?'eliminar':'anular';
		$flag = true;
		$i = 0;
		foreach($this->data as $item){
			if ($item['id']!='0'){
				if(isset($this->params['form']['delete'])){ // eliminar
					$flag = $this->delete($item['CentroDist']['id'], false);
				}
				if (!$flag){
					$data = $this->CentroDist->read(null, $item['CentroDist']['id']);
					$this->Session->setFlash(__("Se ha producido un error al $op el Deposito #".$data['CentroDist']['codigo'], true));
					break;
				}
			}
			$i++;
		}
		if ($flag && $i > 0){
			$this->Session->setFlash(__("El proceso de $op Depositos se ha realizado con exito.", true));
		}
		$this->redirect(array('action'=>'index'));
	}
	
	public function buscar($q = null){
		if(!empty($this->data['CentroDist']['q'])){
			$q = $this->data['CentroDist']['q'];
		} elseif (!empty($this->params['url']['q'])){
			$q = $this->params['url']['q'];
		} elseif (!empty($this->params['form']['q'])){
			$q = $this->params['form']['q'];
		}		
		
		if(empty($q)){
			$result = array('Error'=>'No se establecieron los parámetros adecuadamente');
		} else {			
			$conditions = array(
						'CentroDist.activo' => true,						
						'CentroDist.empresa_id' => $this->empresaId(),						
						'OR'=>array(								
								'CentroDist.codigo iLike'=>strtoupper($q).'%',
								'CentroDist.descripcion iLike'=>'%'.strtoupper($q).'%',
								'CentroDist.direccion iLike'=>'%'.strtoupper($q).'%',
							)
						);			
			
			$fields = array(
				'CentroDist.id',				
				'CentroDist.codigo',	
				'CentroDist.descripcion',
				'CentroDist.direccion'				
			);
			
			$this->CentroDist->Behaviors->attach('Containable');
			$result = $this->CentroDist->find('all', array(
				'conditions' => $conditions,
				'fields' => $fields,
				'recursive'=>-1,
				'order'=>array('CentroDist.codigo desc'),
				)); 
		}
		
		//definiendo valores en caso q sea una peticion para autocompletado
		if(!empty($this->params['url']['autocomplete']) || !empty($this->params['form']['autocomplete'])){
			$res = array();
			foreach($result as $value){
				$res[] = array('value'=>$value['CentroDist']['id'], 'display'=>'<span style="color:gray;font-size:.9em">'.$value['CentroDist']['direccion'].'</span><div style="float:right;font-size:.8em" title="'.$value['Cotizacione']['proveedor_nombre'].'">'. $this->neat_trim($value['CentroDist']['descripcion'], 24) .'</div>');
			}
			$result = $res;
		}
	
		if ($this->RequestHandler->isAjax()){
			$this->_ajaxify($result);
		} else {
			return $result;
		}
	}

}
?>